using System;

namespace WenYu.Core.Errors
{
    /// <summary>
    /// 代码生成异常 - 携带CompileError对象以支持8段式错误提示
    /// </summary>
    public class CodeGenException : Exception
    {
        /// <summary>
        /// 编译错误对象（如果使用新的错误系统）
        /// </summary>
        public CompileError? CompileError { get; }
        
        /// <summary>
        /// 是否使用新的错误系统
        /// </summary>
        public bool HasCompileError => CompileError != null;
        
        /// <summary>
        /// 旧版本构造函数（兼容性）
        /// </summary>
        public CodeGenException(string message) : base(message)
        {
            CompileError = null;
        }
        
        /// <summary>
        /// 新版本构造函数（支持8段式错误提示）
        /// </summary>
        public CodeGenException(CompileError error) : base(error.Title)
        {
            CompileError = error;
        }
    }
}

